package com.open.system.dispatch;


import com.open.base.model.Menu;
import com.open.base.model.Role;
import com.open.system.model.dto.MenuDto;
import com.open.system.model.vo.RouterVo;

import java.util.List;

/**
 * 菜单信息
 *
 * @author 大树03
 * @date 2025-02-02 01:03
 */
public interface IMenuDispatch{
	/**
	 * 添加对象
	 * @param model
	 * @return boolean
	 * @date 2025-02-02 01:03
	 */
	Boolean save(Menu model) ;

	/**
	 * 修改对象
	 * @param model
	 * @return boolean
	 * @date 2025-02-02 01:03
	 */
	Boolean update(Menu model) ;

	/**
	 * 根据条件查询
	 *
	 * @return
	 */
	List<Menu> findByModel(Menu model) ;

	/**
	 * 根据主键查询 
	 * @param pk 主键
	 * @return Menu
	 * @date 2025-02-02 01:03
	 */
	Menu findByPk(Long pk) ;

	/**
	 * 分页查询
	 *
	 * @param menu
	 * @return
	 */
	List<Menu> findTree(Menu menu) ;

	/**
	 * 根据主键删除 
	 * @param pk 主键
	 * @return boolean
	 * @date 2025-02-02 01:03
	 */
	Boolean remove(Long pk) ;

	// 根据角色id查询权限
    List<Menu> findMenuByRoleId(Long roleId);

	// 返回所有权限
	List<String> getAllPermissionVal();

	// 根据用户id查询路由
	List<RouterVo> findRouter(Role role, String menuName);

	// 根据角色id查询菜单
	List<Menu> getByRoleId(Long roleId);

	// 分配角色
	Boolean doAssign(MenuDto menuDto);

	// 获取所有菜单
	List<Menu> findAllMenu();
}